package org.tea.inventory.domain.tea;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
import java.util.Date;

/**
 * 仓库库存流水对象 warehouse_inventory_serial
 * 
 * @author dongxb
 * @date 2025-04-16
 */
@ApiModel(value = "仓库库存流水对象")
@Data
@NoArgsConstructor
public class WarehouseInventorySerial implements Serializable
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 流水编号 */
    @ApiModelProperty(value = "流水编号")
    private String serialCode;

    /** 本仓库id */
    @ApiModelProperty(value = "本仓库id")
    private String warehouseId;

    /** 流水类型 0库存盘点单，1入库单，2出库单，3调拨单，4换货单，5报损单，6包装/组装单，7拆包/拆卸单 */
    @ApiModelProperty(value = "流水类型 0库存盘点单，1入库单，2出库单，3调拨单，4换货单，5报损单，6包装/组装单，7拆包/拆卸单")
    private String serialType;

    /** 拓展字段，可用可不用。 库存流水状态：0启用，1停用 */
    @ApiModelProperty(value = "拓展字段，可用可不用。 库存流水状态：0启用，1停用")
    private Integer status;

    /** 是否删除：0未删除，1已删除 */
    @ApiModelProperty(value = "是否删除： 0未删除，1已删除")
    private Integer delFlag;

    /** 目标仓库id */
    @ApiModelProperty(value = "目标仓库id")
    private String warehouseTargetId;

    /** 入库/经手人id */
    @ApiModelProperty(value = "入库/经手人id")
    private String addHandlerId;

    /** 单据时间(入库/要货/调拨/换货时间等) */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "单据时间(入库/要货/调拨/换货时间等)")
    private Date serialDate;

    /** 换货人id */
    @ApiModelProperty(value = "换货人id")
    private String updateUserId;

    /** 要货部门id */
    @ApiModelProperty(value = "要货部门id")
    private String requireDepartmentId;

    /** 是否执行完毕：0执行完毕，1未执行 */
    @ApiModelProperty(value = "是否执行完毕：0执行完毕，1未执行")
    private Integer isRunFinish;

    /** 是否已经发货：0已发货，1待发货 */
    @ApiModelProperty(value = "是否已经发货：0已发货，1待发货")
    private Integer isDelivery;

    /** 备注/报损原因/换货原因 */
    @ApiModelProperty(value = "备注/报损原因/换货原因")
    private String remarks;

    /** 作废原因 */
    @ApiModelProperty(name = "作废原因")
    private String cancelMsg;

    /** 组装/拆解原因 */
    @ApiModelProperty(value = "组装/拆解原因")
    private String reason;

    /** 组装/拆解原因 */
    @ApiModelProperty(value = "组装/拆解原因")
    private String fileIds;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createDate;

    /** 创建者 */
    @ApiModelProperty(value = "创建者")
    private String createUser;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date updateDate;

    /** 更新者 */
    @ApiModelProperty(value = "更新者")
    private String updateUser;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("serialCode", getSerialCode())
            .append("warehouseId", getWarehouseId())
            .append("serialType", getSerialType())
            .append("status", getStatus())
            .append("warehouseTargetId", getWarehouseTargetId())
            .append("addHandlerId", getAddHandlerId())
            .append("serialDate", getSerialDate())
            .append("updateUserId", getUpdateUserId())
            .append("requireDepartmentId", getRequireDepartmentId())
            .append("isRunFinish", getIsRunFinish())
            .append("isDelivery", getIsDelivery())
            .append("remarks", getRemarks())
            .append("reason", getReason())
            .append("fileIds", getFileIds())
            .append("createDate", getCreateDate())
            .append("createUser", getCreateUser())
            .append("updateDate", getUpdateDate())
            .append("updateUser", getUpdateUser())
            .toString();
    }
}
